
//2401.最长优雅数组
class Solution {
public:
    //将每一个数字的每一个二进制位记录下来，当一个二进制位已经存在时就说明不满足条件
    int longestNiceSubarray(vector<int>& nums) {
        int n=nums.size(),ret=0;
        int left=0,tmp=0;
        for(int right=0;right<n;right++)
        {
            while(tmp&nums[right]) 
                tmp^=nums[left++];   //出窗口，通过^实现将前面数字的二进制移除

            tmp|=nums[right];      //入窗口，通过|将当前数字的二进位加入
            ret=max(right-left+1,ret);//更新答案
        }
        return ret;
    }
};